草庐IT

Swift 可变集 : Duplicate element found

全部标签

c# - 您期望不可变列表的不可变性有多深?

如果你有一个不可变列表,你希望它总是在你请求时返回对同一对象的引用,比如说list.get(0)我的问题是,您是否希望能够改变该对象并在下次从列表中获取它时反射(reflect)该改变? 最佳答案 这取决于上下文。在通用库中,我们应该假设list是不可变的。对列表中元素的更改将反射(reflect)给所有调用者,这是每次返回相同引用的直接结果。但是,如果这是一个专门的不可变树(或其他),并且被如此记录,那么您会期望列表中的项目本身是不可变的,这将成为一个有实际意义的问题。 关于c#-您期

java - 不可变类设计

JoshuaBloch给出的一个建议是,类应该设计为不可变的。我有以下类(class)publicclassDividend{publicDividendsetDate(SimpleDatedate){Dividenddividend=newDividend(this.getStock(),this.getAmount(),date);returndividend;}.....//Moretogo.对于setDate方法,this对象不会被修改。相反,将返回修改了日期字段的this的克隆副本。但是,通过方法名称判断,用户如何知道这个对象仍然保持不可变?除了setDate,还有更好的命名

java - 如何在带有日期字段的java中使类不可变?

我创建了一个带有日期字段的不可变类。我如何确保即使日期字段也是不可变的,因为即使您将日期字段设置为final,您以后仍然可以为其分配不同的值? 最佳答案 在您的getDate()方法中,返回一个newDate()实例,而不是相同的实例。publicDategetDate(){//Notcorrect.returnthis.date;//Thiswillmakeyourclassmutable.//Insteaduse,returnnewDate(this.date.getTime());//Thiswillmakesureyourd

java - 为不可变类实现 clone()

我正在开发一个类库。我有一个矩阵的抽象基类Matrix,它提供一些基本方法的实现。从Matrix派生的是不同类型矩阵的具体子类。我要求矩阵是可克隆的,所以Matrix实现了Cloneable接口(interface)。一些从Matrix派生的类是不可变的不可变类的克隆方法不返回对象的克隆,而是返回对象本身是否可以接受?用于澄清的一些(过于简化的)代码:abstractclassMatriximplementsCloneable{...}classImmutableMatrixextendsMatrix{ImmutableMatrixclone(){returnthis;}...}cla

java - 从 Clojure 调用可变参数 Java 函数时出现问题

我正在尝试使用JDK7中的JavaNIO.2API。特别是,我想调用方法:Paths#get(Stringfirst,String...more)这是一个静态方法,它接收至少一个字符串,并返回一个与之对应的Path对象。有一个重载形式:Paths#get(URIuri)但是,我似乎无法从Clojure中调用top方法。我似乎能得到的最近的是:(Paths/get^Stringdir-fq(object-array0))失败:java.lang.ClassCastException:[Ljava.lang.Object;cannotbecastto[Ljava.lang.String;如

Java 7 使用可变参数重载

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:bugwithvarargsandoverloading?谁能给我解释一下这个是如何工作的:classVararg{staticvoidvararg(int...x){System.out.println("Integer...");}staticvoidvararg(long...x){System.out.println("long...");}publicstaticvoidmain(String[]args){ints=0;vararg(s,s);}}获取编译时错误classVararg{staticv

java - 我应该对不可变类的突变尝试抛出异常吗?如果是这样,哪个异常(exception)?

我想在开发人员试图改变不可变对象(immutable对象)时提醒他。不可变对象(immutable对象)实际上是可变对象的扩展,并覆盖了该对象上的setter以使其不可变。可rebase类:Vector3publicclassVector3{publicstaticfinalVector3Zero=newImmutableVector3(0,0,0);privatefloatx;privatefloaty;privatefloatz;publicVector3(floatx,floaty,floatz){this.x=x;this.y=y;this.z=z;}publicvoidset

java - 谁能解释一下什么是状态和可变数据?

Incomputerscience,functionalprogrammingisaprogrammingparadigmthattreatscomputationastheevaluationofmathematicalfunctionsandavoidsstateandmutabledata.http://en.wikipedia.org/wiki/Functional_programming谁能解释一下什么是状态和可变数据?谁能给我JAVA或JavaScript的例子。 最佳答案 mutable表示任何可以改变的东西,即int

java - 为什么字段在不可变类中应该是最终的?

Strategy对于定义不可变类来说,所有字段都应该是最终的。例如:privateStringname;为什么它必须是最终的?因为我没有为它提供setter方法?无法更改。谢谢。 最佳答案 如果你阅读privatefinalStringname;你知道这个字段是不可变的。如果你阅读privateStringname;您必须阅读整个类(class)以检查它是否有任何更改。这对您来说意味着更多的工作。您现在可能还记得,刚刚编写了没有添加setter的类,但是在编写了更多类之后,六个月后您阅读了自己的类,您可能记不太清了。即使现在没有更改

java - IllegalStateException 适用于不可变对象(immutable对象)吗?

你会扔一个IllegalStateException吗?如果:由于一个或多个字段的值,方法无法完成其工作这些字段是final并且只在构造函数中赋值?教科书示例:您的类是不可变的Collection并且您的方法应该返回最大元素,但此实例为空。我已阅读KevinBourillon`sblogpost关于这个主题,我不确定适用哪条规则。UnsupportedOperationException-thismeansthatthemethodinvokedwillalwaysfailforaninstanceofthisclass(concretetype),regardlessofhowthe